#ifndef __FTGA_MACROS_H__
#define __FTGA_MACROS_H__

////////////////////////////////////////////////////////////////////////////////
// Macros
////////////////////////////////////////////////////////////////////////////////

//#define PLUGIN_DEBUG
#define OUTPUT_PROGRESS
#define DATA_COLLECTION

// All data format (same for input data, output data and the weights)
#define INTEGER_SIZE	16
#define FLOAT_SIZE		32
#define IS_SIGNED		true // (1bit)
#define INT_P_SIZE		3
#define DEC_P_SIZE		28

// --- Universe ---
#define UN_S1_SOL_LGH_IDX	0
#define UN_S2_SOL_IDX		0

// --- Initialiser ---
#define IN_K_SOL_LGH_IDX	18

// --- Mutation Operator ---
#define OM_K_M_RATE_IDX		18

// --- Solutions ---
#define SO_S1_SOL_LGH_IDX	0
#define SO_S2_SOL_IDX		0

// --- Self-Maintenance ---
#define SM_NB_CHARS_IDX		18
#define SM_CHARS_IDX		34

// --- Phenomenon ---
#define PH_K_F_RATE_IDX		18

////////////////////////////////////////////////////////////////////////////////

// Type offset and length
#define TYPE_OFFSET			8
#define TYPE_LENGTH			8

// Cross-over type
#define OP_CO				"00010000"

// Phenomenon type (for fault injection)
#define PHENOMENON 			"00001111"

////////////////////////////////////////////////////////////////////////////////

#endif
